//struct ListNode* detectCycle(struct ListNode* head) {
//    struct ListNode* slow = head, * fast = head;
//    while (fast && fast->next) {
//        fast = fast->next->next;
//        slow = slow->next;
//
//        if (slow == fast) {
//            struct ListNode* cur1 = head, * cur2 = slow;
//            while (cur1 != cur2) {
//                cur1 = cur1->next;
//                cur2 = cur2->next;
//            }
//            return cur1;
//        }
//    }
//    return NULL;
//}

